#ifndef MONSTER_H
#define MONSTER_H


#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/ip.h>
#include <string.h>
#include <netdb.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/if_ether.h>
#include <net/ethernet.h>
#include <unistd.h>
#include <net/if_arp.h>
////////////////////////////////////////时间控制函数////////////
#include <time.h>
#include <sys/time.h>

#include <callbacks.h>

extern int flag1;
extern int flag2;

extern long packet_total_len;
extern GtkWidget *datas_entry;
extern GtkWidget *packets_num_entry;
extern GtkWidget *current_speed_entry;
extern long packet_num;
extern long current_speed;
//////////////////////////////////////////////////////////////
int num = 0;            //记录每秒钟接受数据大小
char buffer[65535];      //设置接受缓冲区大小
//设置错误函数   *why表示错误信息实体   n为返回值
//显示每秒的数据速率   signal 为控制信号   num 全局变量统计数据

void display(int signal)
{
    on_RECIEVED_DATAS_activate((GtkEntry*)datas_entry,packet_total_len);
    on_CURRENT_SPEED_activate((GtkEntry *)current_speed_entry, current_speed);
    on_PACKETS_NUM_activate((GtkEntry *)packets_num_entry, packet_num);
}

//时间控制函数 并设定时间间隔为1秒
int time_control()
{
  struct sigaction act;
  act.sa_handler=display;
  act.sa_flags=0;
  sigemptyset(&act.sa_mask);
  sigaction(SIGALRM,&act,NULL);

  struct itimerval value;
  value.it_value.tv_sec=1;
  value.it_value.tv_usec=0;
  value.it_interval=value.it_value;

  setitimer(ITIMER_REAL,&value,NULL);
}


#endif
